package com.yanxiuhair.framework.web.service;

import java.util.Set;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.stereotype.Service;
import com.yanxiuhair.common.constant.Constants;
import com.yanxiuhair.common.utils.CacheUtils;

/**
 * @ClassName:  CacheService   
 * @Description: 缓存操作处理  
 * @author: gaoxiaochuang   
 * @date:   2021年7月1日 下午4:48:28   
 *     
 * @Copyright: 2021 http://www.yanxiuhair.com/ Inc. All rights reserved. 
 * 注意：本内容仅限于许昌妍秀发制品有限公司内部传阅，禁止外泄以及用于其他的商业目
 */
@Service
public class CacheService {
	/**
	 * 获取所有缓存名称
	 * 
	 * @return 缓存列表
	 */
	public String[] getCacheNames() {
		String[] cacheNames = CacheUtils.getCacheNames();
		return ArrayUtils.removeElement(cacheNames, Constants.SYS_AUTH_CACHE);
	}

	/**
	 * 根据缓存名称获取所有键名
	 * 
	 * @param cacheName
	 *            缓存名称
	 * @return 键名列表
	 */
	public Set<String> getCacheKeys(String cacheName) {
		return CacheUtils.getCache(cacheName).keys();
	}

	/**
	 * 根据缓存名称和键名获取内容值
	 * 
	 * @param cacheName
	 *            缓存名称
	 * @param cacheKey
	 *            键名
	 * @return 键值
	 */
	public Object getCacheValue(String cacheName, String cacheKey) {
		return CacheUtils.get(cacheName, cacheKey);
	}

	/**
	 * 根据名称删除缓存信息
	 * 
	 * @param cacheName
	 *            缓存名称
	 */
	public void clearCacheName(String cacheName) {
		CacheUtils.removeAll(cacheName);
	}

	/**
	 * 根据名称和键名删除缓存信息
	 * 
	 * @param cacheName
	 *            缓存名称
	 * @param cacheKey
	 *            键名
	 */
	public void clearCacheKey(String cacheName, String cacheKey) {
		CacheUtils.remove(cacheName, cacheKey);
	}

	/**
	 * 清理所有缓存
	 */
	public void clearAll() {
		String[] cacheNames = getCacheNames();
		for (String cacheName : cacheNames) {
			CacheUtils.removeAll(cacheName);
		}
	}
}
